package com.spic.system.api;

import com.spic.common.core.constant.ServiceNameConstants;
import com.spic.common.core.domain.R;
import com.spic.system.api.factory.RemoteBusinessFallBackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;

/**
 * 业务服务
 */
@FeignClient(contextId = "remoteBusinessService", value = ServiceNameConstants.SPIC_BUSINESS_TICKETS, fallbackFactory = RemoteBusinessFallBackFactory.class)
public interface RemoteBusinessService {

    @PostMapping("/flood/jobAdd")
    R<Object> monitorRainfall();

    @PostMapping("/hkSafe/consumersHkAlarm")
    R<Object> consumersHkAlarm();

    /**
     * 海康预置点
     *
     * @return
     */
    @PostMapping("/hkSafe/getPresets")
    R<Object> getPresets();

    /**
     * 海康 烟感报警
     *
     * @return
     */
    @PostMapping("/hkSafe/getCameraSearch")
    R<Object> getCameraSearch();

    @PostMapping("/hkSafe/getDoorEventsTask")
    R<Object> getDoorEventsTask(@RequestBody Map<String, Object> map);

    //门禁点列表 批量入库
    @PostMapping("/hkSafe/getDoorSearchList")
    R<Object> getDoorSearchList();

    /**
     * 公文督办发送短信
     *
     * @param id
     * @return
     */
    @PostMapping("/docSupervision/sendMsg")
    R<Object> docSendMsg(@RequestBody String id);

    /**
     * 隐患督办发短信
     *
     * @param id
     * @return
     */
    @PostMapping("/hiddenSupervision/sendMsg")
    R<Object> hiddenSendMsg(@RequestBody String id);


    @PostMapping("/artemis/fplAlarmData")
    R<Object> getFplAlarmData();

    //边坡实时位移数据
    @PostMapping("/bp/saveBpGnss")
    R<Object> saveBpGnss();

    //边坡测点
    @PostMapping("/bp/saveBpPositionData")
    R<Object> saveBpPositionData();

    //边坡告警
    @PostMapping("/bp/saveBpAlarm")
    R<Object> saveBpAlarm();

    @PostMapping("/hkSafe/contractorPersistent")
    R<Object> contractorPersistent();

    /**
     * 承包商人员同步到海康
     */
    @PostMapping("/hkSafe/addContractorPerson")
    R<Object> addContractorPerson();

    /**
     * 承包商人员分配门禁权限
     */
    @PostMapping("/hkSafe/authAccess")
    R<Object> authAccess();

    /**
     * 前端页面分配承包商人员门禁权限
     */
    @PostMapping("/hkSafe/accessAuthByPage")
    R<Object> accessAuthByPage();

    /**
     * 驾驶员同步
     */
    @PostMapping("/hkSafe/addDriver")
    R<Object> addDriver();

    /**
     * 车牌同步
     */
    @PostMapping("/hkSafe/syncPlate")
    R<Object> syncPlate();

    @PostMapping("/two_tickets/sendNotic")
    R<Object> sendNotic(@RequestParam("userId") Long userId, @RequestParam("name") String name);

    @GetMapping("/flow/notice/push")
    R<Object> pushMessage();

    @GetMapping("/train/trainCertificate/syncTrainCertificate")
    R<Object> syncTrainCertificate();

    @GetMapping("/vehicle/car/syncOilWear")
    R<Object> syncOilWear();

    @GetMapping("/vehicle/management/filterDirtyData")
    R<Object> filterCarDirtyData();

    @GetMapping("/violation/violations_speed_record/filterDirtyData")
    R<Object> filterIllegalCaptureDirtyData();

    @GetMapping("/violation/information/filterDirtyData")
    R<Object> filterViolationInformationDirtyData();

    @GetMapping("/violation/action/filterDirtyData")
    R<Object> filterViolationActionInputDirtyData();

    @GetMapping("/blast/filterDirtyData")
    R<Object> filterBlastDirtyData();

    @GetMapping("/informatization/beforeAfterWork/filterDirtyData")
    R<Object> filterMeetingBeforeDirtyData();

    @GetMapping("/violation/information/createTrain")
    R<Object> createTrain();

    @GetMapping("/violation/action/createTrain")
    R<Object> inputCreateTrain();
}
